package d6_enum02;

public class Test {
    public static void main(String[] args) {
        //目标: 搞清楚枚举的应用场景: 信息标志和信息分类
        //需求: 需要你提供一个方法,可以完成向下取整, 向上取整, 四舍五入, 去掉小数部分
        //常量做信息标准和分类: 也很优雅, 但是参数值不被约束!!你想传什么就传什么.但是维护成本低,性能好,应为常量h会"被宏替换"
        //枚举做信息标准和分类:很优雅, 参数收到约束, 最好的信息标志和分类的理想方案(但是维护成本高,行为对象化了,对象会占用内存)
        System.out.println(handleData(3.9991, Constant.DOWN));
        System.out.println();


    }

    public static double handleData(double number, int flag) {
        switch (flag) {
            case Constant.DOWN:
                //向上取整
                number = Math.floor(number); //3.9999 == 3
                break;
            case Constant.UP:
                //向下取整
                number = Math.ceil(number); //3.1 == 4
                break;
            case Constant.HALF_UP:
                //四舍五入
                number = Math.round(number); //3.6 == 4
                break;
                //去掉小数部分
            case Constant.DELETE_LEFT:
                number = (int) number;
                break;
        }
        return number;
    }
}
